package com.neusoft.bookstore.customer.controller;

import com.neusoft.bookstore.customer.model.Customer;
import com.neusoft.bookstore.customer.service.CustomerService;
import com.neusoft.bookstore.util.ErrorCode;
import com.neusoft.bookstore.util.ResponseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName CustomerController
 * @Author yins
 * @Date 2020/4/23 10:54
 */

@Api("customer")
@RestController
@RequestMapping("customer")
public class CustomerController {

    @Autowired
    private CustomerService customerService;


    /**
     * 新增（注册）用户
     * @param customer 封装了所有前端页面的用户信息
     * @return
     */
    @ApiOperation(value = "注册新增用户",notes = "app端和pc端新用户注册")
    @PostMapping("addCustomer")
    public ResponseVo addCustomer(Customer customer){
        ResponseVo responseVo = new ResponseVo();
        try {
            responseVo=customerService.addCustomer(customer);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }


    /**
     * app和pc端用户登陆
     * @param customer
     * @return
     */
    @ApiOperation(value = "app和pc端用户登陆",notes = "app和pc端用户登陆")
    @PostMapping("login")
    public ResponseVo login(Customer customer){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.login(customer);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }


    /**
     * pc端用户退出
     * @param userAccount
     * @return
     */
    @ApiOperation(value = " pc端用户退出",notes = " pc端用户退出")
    @GetMapping("loginOut")
    public ResponseVo loginOut(String userAccount){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.loginOut(userAccount);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }



    /**
     * 用户列表查询
     * @param customer
     * @return
     */
    @ApiOperation(value = "用户列表查询",notes = "用户列表查询")
    @PostMapping("listCustomers")
    public ResponseVo listCustomers(Customer customer){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.listCustomers(customer);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }


    /**
     * 用户详情接口
     * @param id
     * @return
     */
    @ApiOperation(value = "用户详情查询",notes = "用户详情查询")
    @GetMapping("findCustomerById")
    public ResponseVo findCustomerById(Integer id){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.findCustomerById(id);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }



    /**
     * 根据用户id 修改用户信息
     * @param customer
     * @return
     */
    @ApiOperation(value = "根据用户id 修改用户信息",notes = "根据用户id 修改用户信息")
    @PostMapping("updateCustomerById")
    public ResponseVo updateCustomerById(Customer customer){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.updateCustomerById(customer);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }


    /**
     * 根据用户id 删除用户信息（逻辑删除）
     * @param id
     * @return
     */
    @ApiOperation(value = "根据用户id 删除用户信息",notes = "根据用户id 删除用户信息")
    @GetMapping("deleteCustomerById")
    public ResponseVo deleteCustomerById(Integer id){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.deleteCustomerById(id);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }


    /**
     * 根据用户id 更新用户密码 （app + pc）
     * @param originPwd 原始密码
     * @param newPwd    新密码
     * @param userId    修改密码用户的id
     * @param userAccount   登录人的账号
     * @return
     */
    @ApiOperation(value = "根据用户id 更新用户密码 （app + pc）",notes = "根据用户id 更新用户密码 （app + pc）")
    @GetMapping("updatePwd")
    public ResponseVo updatePwd(String originPwd,String newPwd,Integer userId,String userAccount){
        ResponseVo responseVo = new ResponseVo();
        try {
            // 登陆
            responseVo=customerService.updatePwd(originPwd,newPwd,userId,userAccount);
        }catch (Exception e){
            //处理异常 提示前台 服务端 有异常
            responseVo.setCode(ErrorCode.SERVER_EXCEPTION_CODE);
            responseVo.setSuccess(false);
            responseVo.setMsg("系统异常");
            // 服务端后台 打印异常
            e.printStackTrace();
        }
        return responseVo;
    }




}
